import os.path
import shutil
import subprocess

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QLabel, QComboBox, QGridLayout, QMessageBox


class RestrictWifi(QWidget):

    def restrict_wifi(self):
        if self.states_combobox.currentIndex() == 0:
            try:
                shutil.copyfile('/usr/share/admin-tweak/nowifi.rules', '/etc/polkit-1/rules.d/nowifi.rules')
                text = 'Теперь при подключении к wi-fi будет запрашиваться пароль администратора.'
            except Exception as e:
                print(f'Возникла непредвиденная ошибка: {e}')
        else:
            try:
                os.remove('/etc/polkit-1/rules.d/nowifi.rules')
            except FileNotFoundError:
                pass
            text = 'Теперь можно подключаться к wi-fi без пароля администратора.'
        subprocess.run(['systemctl', 'restart', 'polkit'])
        dlg = QMessageBox()
        dlg.setWindowTitle('Внимание')
        dlg.setText(text)
        dlg.exec()

    def __init__(self):
        super().__init__()

        layout = QGridLayout()
        self.setLayout(layout)

        recreate_user_label = QLabel('Ограничение Wi-Fi')
        recreate_user_label.setAlignment(Qt.AlignCenter)
        layout.addWidget(recreate_user_label, 0, 0, 1, 2)
        current_state_label = QLabel('Текущее состояние: ')
        current_state_label.setAlignment(Qt.AlignRight)
        layout.addWidget(current_state_label, 1, 0)
        self.states_combobox = QComboBox()
        self.states_combobox.addItems(['Запрашивать пароль администратора', 'Разрешить подключаться без пароля'])
        layout.addWidget(self.states_combobox, 1, 1)
        if not os.path.isfile('/etc/polkit-1/rules.d/nowifi.rules'):
            self.states_combobox.setCurrentIndex(1)
        layout.addWidget(QLabel(''), 2, 0)
        layout.setRowStretch(0, 0)
        layout.setRowStretch(1, 0)
        layout.setRowStretch(2, 1)
